home *** CD-ROM | disk | FTP | other *** search
- /*==============================================================================
- *
- * File: MFOBJTYP.C
- *
- * Function: Object name/type lookup
- *
- * Author(s): Rick Wong (RWW)
- *
- * Copyright: (c) 1995 by Apple Computer, Inc., all rights reserved.
- *
- * Change History (most recent first):
- * Fabio Changed file name to 8 characters
- * F2H_RWW File created.
- *==============================================================================
- */
- #define MF3D_Extern
- #include "MFOBJTYP.H"
- #undef MF3D_Extern
-
- #include <stdlib.h>
-
- #include "MFERRORS.H"
- #include "MFOBJCTS.H"
- #include "MFTYPES.H"
- #include "MFASSERT.H"
- #include "MFINTOBJ.H"
- #include "MFTEXTRD.H"
- #include "MFTEXTUT.H"
-
- /*==============================================================================
- * MF3D_FindObjectFromName
- *
- * Get the object stuff, given the object name
- *==============================================================================
- */
- MF3DErr
- MF3D_FindObjectFromName(
- const char *inObjName,
- MF3D_ObjStuffPtr *outObjStuffPtr,
- MF3DObjType *outObjectType)
- {
- MF3DErr result;
-
- result = kMF3DNoErr;
-
- if (inObjName[0] == '-')
- { MF3DInt32 objType;
-
- objType = atoi(inObjName);
-
- if (objType >= 0)
- result = kMF3DErrIllegalObjName;
- else
- { *outObjStuffPtr = &gMF3D_UnknownObjStuffTable;
- MFASSERT(sizeof(*outObjectType) == sizeof(objType));
- *outObjectType = objType;
- }
- }
- else
- { MF3D_ObjStuffPtr objStuffPtr;
-
- objStuffPtr = gMF3D_ObjStuffTable;
- do
- { if (MF3D_CompareObjNames(inObjName, objStuffPtr->name) == 0)
- { *outObjStuffPtr = objStuffPtr;
- break;
- }
- ++objStuffPtr;
- } while (objStuffPtr->type != kMF3DObjInvalid);
- if (objStuffPtr->type == kMF3DObjInvalid)
- result = kMF3DErrIllegalObjName;
- else
- *outObjectType = objStuffPtr->type;
-
- }
-
- return result;
- }
-
- /*==============================================================================
- * MF3D_FindObjectFromType
- *
- * Get the object stuff, given the object type
- *==============================================================================
- */
- MF3DErr
- MF3D_FindObjectFromType(
- MF3DObjType inObjType,
- MF3D_ObjStuffPtr *outObjStuffPtr)
- {
- MF3DErr result;
-
- result = kMF3DNoErr;
-
- if (inObjType < 0)
- { *outObjStuffPtr = &gMF3D_UnknownObjStuffTable;
- }
- else
- { MF3D_ObjStuffPtr objStuffPtr;
-
- objStuffPtr = gMF3D_ObjStuffTable;
- do
- { if (inObjType == objStuffPtr->type)
- { *outObjStuffPtr = objStuffPtr;
- break; /* ### NORMAL LOOP EXIT ### */
- }
- ++objStuffPtr;
- } while (objStuffPtr->type != kMF3DObjInvalid);
- if (objStuffPtr->type == kMF3DObjInvalid)
- result = kMF3DErrIllegalObjName;
- }
-
- return result;
- }
-
- /*==============================================================================
- * ConvertUserDefinedObjType
- *
- * Negative numbers are user-defined object types.
- * Verify that this one exists.
- *==============================================================================
- */
- MF3DErr
- MF3D_ConvertUserDefinedObjType(
- MF3D_FilePtr inMetafilePtr,
- MF3DObjType inObjType,
- MF3DCStringPtr *outObjName)
- {
- MF3DUns32 numTypes;
- MF3D_TypeListPtr typeListPtr;
- MF3DErr result;
-
- /* Assume we will not find what we are looking for */
- result = kMF3DErrIllegalObjName;
-
- typeListPtr = inMetafilePtr->typeTable.types;
- for (numTypes = inMetafilePtr->typeTable.nTypes;
- result != kMF3DNoErr && numTypes > 0;
- --numTypes, ++typeListPtr)
- { MFASSERT(sizeof(inObjType) == sizeof(typeListPtr->number));
- if (inObjType == (MF3DObjType)typeListPtr->number)
- { *outObjName = MF3D_DuplicateCString(typeListPtr->name);
- result = kMF3DNoErr; /* ### REAL LOOP EXIT ### */
- }
- }
-
- return result;
- }
-